#include <cinttypes>
#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <string>

// void showtid(pthread_t &tid)
// {
//     printf("tid: %" PRIx64 "\n", (uint64_t)tid);
// }

// std::string Formatid(const pthread_t& id)
// {
//     char buf[32];
//     snprintf(buf, sizeof(buf), "%" PRIx64, (uint64_t)id);
//     return std::string(buf);
// }

// void* routine(void* arg)
// {
//     std::string name = (const char*)arg;
//     pthread_t tid = pthread_self();
//     while(true)
//     {
//         sleep(1);
//         std::cout << "我是新线程: name: " << name << ", pid: " << Formatid(tid) << std::endl;
//     }
//     return (void*)123;
// }

// int main()
// {
//     pthread_t tid;
//     int n = pthread_create(&tid, nullptr, routine,(void*)"thread-1");
//     showtid(tid);
//     int cnt = 5;
//     while (cnt)
//     {
//         std::cout << "我是main线程: 我的名字是: main thread" << " 我的Id是: " 
//             << Formatid(pthread_self()) <<  std::endl;
//         sleep(1);
//         cnt--;
//     }

//     void* ret = nullptr;
//     pthread_join(tid, &ret);

//     return 0;
// }


//  c++线程使用

// #include <thread>

// void hello()
// {
//     while (true)
//     {
//         std::cout << "新线程: hello world, pid: " << getpid() << std::endl;
//         sleep(1);
//     }
// }
// int main()
// {
//     std::thread t(hello);

//     while (true)
//     {
//         std::cout << "我是主线程..." << ", pid: " << getpid() << std::endl;
//         sleep(1);
//     }

//     t.join();
//     return 0;
// }


//  pthread线程使用

// void *threadrun(void *args)
// {
//     std::string name = (const char*)args;
//     while(true)
//     {
//         sleep(1);
//         std::cout << "我是新线程: name: " << name << ", pid: " << getpid() << std::endl;
//         int a = 10;
//         a /= 0;   //  发生异常  进程直接断掉   线程全部挂掉
//     }
//     return nullptr;
// }

// int main()
// {
//     pthread_t tid;
//     pthread_create(&tid, nullptr, threadrun, (void*)"thread-1");

//     while(true)
//     {
//         std::cout << "我是主线程..." << ", pid: " << getpid() << std::endl;
//         sleep(1);
//     }
//     return 0;
// }